iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
Modern Web

不熟 Git 嗎?好巧我也是,不如我們一起來學吧!系列 第 30

一起來學 Git 吧!(30) - 設定指令縮寫與常用指令一覽

  • 分享至 

  • xImage
  •  

前言

實際開始使用 Git 之後,會執行到的指令幾乎是大同小異,不外乎 git statusgit addgit commit -m 等指令不斷的重複。
雖然這些指令都不算太長,不過在輸入指令的過程,無形之中是會浪費不少打字時間的。
這邊呼籲 GUI 派的讀者,不要在看到這句話之後趁機推坑,不然會讓指令派的讀者過得太舒服!!

如果有辦法少打幾個字,那麼 打指令時會產生一種快感 將會在不知不覺中省下不少時間!

為指令派的讀者獻上此系列文最後的溫柔:

設定指令縮寫

Git 縮寫相關指令

分別介紹一下「設定縮寫」、「查看縮寫」、「刪除縮寫」三個指令:

設定縮寫的指令

使用這個指令,就可以在設定檔中新增指令的縮寫:

git config --global alias.[想要縮寫的名稱] [原本的指令]

例如:

git config --global alias.st status

表示要讓 git st 指令等同於 git status 的效果。

注意這個行為並不是「取代」,只是設定「縮寫」,所以 git stgit status 兩個指令都可以在你的 Git 專案起作用。

查看已設定的縮寫

要查看自己設定了哪些縮寫的話,可以這樣下指令查詢:

git config --get-regexp alias

刪除縮寫設定

當發現有些縮寫設定後卻都用不到,可以使用這個指令把縮寫移除:

git config --global --unset alias.[縮寫名稱]

常見指令縮寫

介紹一下筆者自己有設定,也推薦可以使用的縮寫

git status

git config --global alias.st status

執行完後,未來執行 git status ,只需要輸入下列指令,就能代表相同的意思

git st

git log

查看 log 的文章有提到 git log 常搭配的參數,例如 --oneline--graph ,如果設定成縮寫就會方便很多:

git config --global alias.l  "log --oneline --graph"

之後只要執行縮寫指令,就能達到完整指令的效果:

git l

此外,還有那串幾乎不太可能直接輸入使用的 format 指令,也可以設定縮寫:

git config --global alias.ls "log --oneline --graph --pretty=format:'%C(yellow)%h%Creset - %C(cyan)<%an>%Creset %s %C(magenta)(%ar)%Creset'"

打完之後就可以用這個指令呈現整齊的 log 資訊:

git ls

註:-n ( n 為自然數 ),是 git log 原本就能用的參數,是讓 git log 呈現特定筆數的參數。

git add

git add 指令沒什麼好縮寫的,這裡設定的是「將檔案移出暫存區」指令。

當時還不知道 git reset 也能將檔案移出暫存區,一直覺得 git restore --staged 指令不好打,於是設定了這個縮寫:

git config --global alias.rmadd "restore --staged"

git commit

commit 系列算是很常用的指令,介紹一下筆者有設定的縮寫。

git commit

git commit 本身的縮寫

git config --global alias.cm commit

git commit -m

提交版本時會用到的縮寫

git config --global alias.cmm "commit -m"

命名概念很單純,就是 commit + -m = cmm

這個指令設定完之後,提交版本時就不用多打 -m 參數了:

git cmm "版本標題訊息"

git add . + git commit

一次提交所有異動檔案的縮寫:

git config --global alias.cmam "commit -am"

git commit --amend -m

要「修正上一個版本提交的訊息」會用到的指令,也設定一個縮寫:

git config --global alias.cmrn "commit --amend -m"

概念是 commit rename 的簡稱:cmrn

git commit --amend --no-edit

單純的加一些資料到最近的版本指令也是頗長,使用縮寫會方便很多:

git config --global alias.cmcm "commit --amend --no-edit"

筆者的命名概念是 「兩個 commit」 ,使用了 cmcm 當作這個指令的簡稱。

git branch

再來是分支系列的縮寫

git branch

git branch 本身的縮寫:

git config --global alias.br branch

git branch -m

重新命名目前分支指令的縮寫:

git config --global alias.brm "branch -m"

git branch -d

刪除分支的指令縮寫:

git config --global alias.brd "branch -d"

git branch -f

強制建立分支指令縮寫:

git config --global alias.brf "branch -f"

git checkout

切換分支的縮寫:

git config --global alias.co checkout

git checkout -b

建立並且切換分支的縮寫:

git config --global alias.cob "checkout -b"

另一種設定縮寫的方式

Git 初始化設定 文章中,常見問題「第四題」曾經提到過,git config --global 指令是用來更改 .gitconfig 檔案的指令。

既然我們是用它來設定縮寫,代表我們可以直接去 .gitconfig 檔案編輯縮寫。
如果你沒操作過這個檔案的話,可以到下列的路徑開啟檔案:

  • Mac~/.gitconfig
  • WindowsC:\Users\你的使用者名字\.gitconfig

接著請找到 [alias] 區塊,就可以看到剛剛設定縮寫的資料,如果沒有設定過任何縮寫,可以「手動新增」[alias] 區塊

這裡提供所有筆者設定資訊給大家參考,需要的話可以複製回去更改成習慣的設定:

[alias]
	# status	
	st = status
	
	#log
	l = log --oneline --graph # 顯示log
	ls = log --oneline --graph --pretty=format:'%C(yellow)%h%Creset - %C(cyan)<%an>%Creset %s %C(magenta)(%ar)%Creset' # 格式化log
	rl = reflog --pretty=format:'%C(yellow)%h%Creset %C(red)%gd%Creset %C(cyan)<%an>%Creset %C(auto)%s%C(reset) %C(magenta)(%cr)%C(reset)' # 格式化reflog
	
	# add
	all = add .
	rmadd = restore --staged # 取消add
	
	# commit
	cm = commit # commit
	cmm = commit -m # commit message
	cmam = commit -am # 一次整合add跟commit
	cmcm = commit --amend --no-edit
	cmrn = commit --amend -m # 重新更改最近一次的commit訊息
	cmempty = commit --allow-empty -m --no-edit # 建立一個空的commit
	
	# branch
	br = branch # 顯示所有branch
	brv = branch -v # 顯示所有branch的最後一次commit
	brm = branch -m # 重新命名branch
	brd = branch -d # 刪除 branch
	brf = branch -f # 強制建立分支

	
	# checkout
	co = checkout # 切換分支
	cob = checkout -b # 建立並切換分支

	# reset
	rst = reset # 取消add
	rsth = reset --hard # reset hard 模式
	rsthp = reset --hard HEAD^ # 回到上一個commit --hard
	rstp = reset  HEAD^ # 回到上一個commit --mixed
	rsto = reset  --hard  ORIG_HEAD

	#rebase
	rb = rebase # rebase
	rbi = rebase -i # 互動式rebase
	rbc = rebase --continue # 繼續rebase

	# 遠端相關
	fetchp = fetch --prune # 取得遠端所有資料並刪除已經不存在的branch
	bra = branch -a # 顯示所有branch
    psd = push origin -d # 刪除遠端branch
	psf = push -f # 強制push
	pso = push -u origin # 建立遠端branch

	getalias = config --get-regexp alias # 取得所有alias

常用指令一覽表

初始設定

查詢目前 Git 所使用的 Email

git config --global user.email

設定 Git 的使用者名稱

git config --global user.name 使用者名稱

查詢 Git 目前設定的文字編輯器

git config core.editor

設定 Git 文字編輯器

git config --global core.editor 程式名稱

將 Git 文字編輯器 Visual Studio Code

git config --global core.editor "code --wait"

詳細資訊可參考 GitHub 官方文件

開始使用 Git

初始化 Git 儲存庫

git init

將工作目錄所有檔案加到暫存區

git add .

將指定的檔案加到暫存區

git add 檔案名稱

將暫存區的檔案提交到 Git 儲存庫

git commit -m "版本訊息"

一次完成加入暫存區與提交版本

git commit --am "版本訊息"
git commit -a -m "版本訊息"

查詢目前工作目錄中的變化

git status

查詢 commit 資訊

git log

開發過程會用到的指令

復原加入暫存區的檔案

git restore --staged 檔案名稱

復原修改檔案的編輯內容

git restore 檔案名稱

修正最後一次提交的訊息

git commit --amend -m "訊息"

修正最後一次的提交內容

git commit --amend

使用 .gitignore 排除檔案

  1. 在工作目錄新增 .gitignore 檔案
  2. 在檔案中輸入要排除的檔案名稱

讓分支回到過去的 commit

Mixed Reset

git reset commitID

Soft Reset

git reset --soft commitID

Hard Reset

git reset --hard commitID

重新定義基底

git rebase commitID

rebase 互動模式

git rebase -i commitID

復原 commit

git revert HEAD

使用 Git 分支

查詢分支

git branch

建立分支

git branch 分支名稱
git checkout -b 分支名稱  # 切換並建立新分支

強制建立已存在分支

git branch -f 分支名稱

切換分支

git checkout 分支名稱

刪除分支

git branch -d 分支名稱

強制刪除分支

git branch -D 分支名稱

合併分支

git merge 要被合併的分支名稱

發生衝突,放棄合併

git merge --abort

使用遠端儲存庫

新增遠端儲存庫的位置

git remote add 遠端的名稱 遠端網址

推送分支至遠端並追蹤

git push -u 遠端名稱 地端分支:遠端分支

clone 遠端儲存庫

git clone 遠端網址

更新遠端分支的異動回地端

git pull

刪除遠端分支

git push 遠端名稱 --delete 遠端分支名稱
git push 遠端名稱 -d 遠端分支名稱
git push 遠端名稱  :遠端分支名稱

同步遠端分支

git fetch

修剪遠端分支

git fetch --prune

上一篇
一起來學 Git 吧!(29) - 使用 GitHub - Pull Requests (PR)
下一篇
一起來學 Git 吧! - 後記
系列文
不熟 Git 嗎?好巧我也是,不如我們一起來學吧!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言